

li = {1, 2, 3, 4}

for x in li:
    print(x)

# 使用迭代器，完全等价于上面的实现
print("use iterator", "-" * 10)
it = iter(li)
while True:
    try:
        print(next(it))
    # 会捕获此异常
    except StopIteration:
        print("the last iter!")
        break

# 默认的range函数第三个参数步长只接受整型
for i in range(10, 20, 2):
    print(i)


# 自定义迭代器、生成器, yield是生成器，而调用yield的方法是迭代器
def frange(start, end, step):
    x = start
    while x < end:
        # 每次调用此函数时，都从此处返回一个当前值
        yield x
        # 下一次调用直接从此处开始执行
        x += step


print("customer iterator", "-" * 10)
for i in frange(10, 12, 0.5):
    print(i)
# 10
# 10.5
# 11.0
# 11.5
